// #pragma once // 预处理器指令，用于确保头文件在编译时只被包含一次  与下边的 #ifndef #define #endif 效果一致 但不要标准语法
#ifndef SPEECH_MANAGE_H
#define SPEECH_MANAGE_H
#include <iostream>
#include <vector>
#include <map>
#include "speaker.h"
using namespace std;

/*
管理类
功能描述：
  提供菜单界面与用户交互
  对演讲比赛流程进行控制
  与文件的读写交互
*/
class SpeechManage
{
public:
  SpeechManage();

  void show_menu();   // 显示功能单
  void exit_system(); // 退出系统
  void init_speech();  // 系统初始化 
  void create_speaker();  // 创建选手
  void start_speech();  // 开始比赛
  void speech_draw();  // 抽签
  void speech_contest();  // 演讲 
  void show_victor();  // 晋级或者获胜选手公示
  void save_reocrd();  // 保存比赛记录
  void show_history();  // 显示历史比赛记录
  void remove_history();  // 清除历史比赛记录
  ~SpeechManage();

private:
  vector<int> speaker_containter;    // 存放选手的容器 12人
  vector<int> promotion_containter; // 晋级选手容器 6人
  vector<int> victor_containter;    // 胜利者容器 3人
  map<int, Speaker> m_speaker;  // id 与 选手对应表
  int m_times;  // 比赛轮次
  string m_history_record = "record.csv";  // 历史记录文件名
};
#endif // SPEECH_MANAGE_H